package genes;

import java.util.HashMap;

public class AminoAcids {
	//Make this class persistant amy
	private final HashMap<String, String> DNAToAminoAcid;

	public AminoAcids (){
		this.DNAToAminoAcid= new HashMap<String, String>();
	
	//	this.DNAToAminoAcid.put("CTT", "L");
	//	this.DNAToAminoAcid.put("GGA", "GLY");   	  
	//	this.DNAToAminoAcid.put("GGU", "GLY");   	 
	//	this.DNAToAminoAcid.put("GGC", "GLY");  
	// 	
//		this.DNAToAminoAcid.put("GAG", "GLU");
//		this.DNAToAminoAcid.put("GAA", "GLU");   	  
//		this.DNAToAminoAcid.put("GAU", "ASP");   	 
//		this.DNAToAminoAcid.put("GAC", "ASP");  
//	 	
//		this.DNAToAminoAcid.put("GUG", "VAL");
//		this.DNAToAminoAcid.put("GUA", "VAL");   	  
//		this.DNAToAminoAcid.put("GUU", "VAL");   	 
//		this.DNAToAminoAcid.put("GUC", "VAL");  
//	 	
//		this.DNAToAminoAcid.put("GCG", "ALA");
//		this.DNAToAminoAcid.put("GCA", "ALA");   	  
//		this.DNAToAminoAcid.put("GCU", "ALA");   	 
//		this.DNAToAminoAcid.put("GCC", "ALA");  
//	 	
//		this.DNAToAminoAcid.put("AGG", "ARG");
//		this.DNAToAminoAcid.put("AGA", "ARG");   	  
//		this.DNAToAminoAcid.put("AGU", "SER");   	 
//		this.DNAToAminoAcid.put("AGC", "SER");  
	 	
//		this.DNAToAminoAcid.put("AAG", "LYS");
//		this.DNAToAminoAcid.put("AAA", "LYS");   	  
//		this.DNAToAminoAcid.put("AAU", "ASN");   	 
//		this.DNAToAminoAcid.put("AAC", "ASN");  
	 	
//		this.DNAToAminoAcid.put("AUG", "MET");
//		this.DNAToAminoAcid.put("AUA", "ILE");   	  
//		this.DNAToAminoAcid.put("AUU", "ILE");   	 
//		this.DNAToAminoAcid.put("AUC", "ILE");  
//	 	
//		this.DNAToAminoAcid.put("ACG", "THR");
//		this.DNAToAminoAcid.put("ACA", "THR");   	  
//		this.DNAToAminoAcid.put("ACU", "THR");   	 
//		this.DNAToAminoAcid.put("ACC", "THR");  
//	 	
//		this.DNAToAminoAcid.put("UGG", "TRP");
//		this.DNAToAminoAcid.put("UGA", "END");   	  
//		this.DNAToAminoAcid.put("UGU", "CYS");   	 
//		this.DNAToAminoAcid.put("UGC", "CYS");  
//	 	
//		this.DNAToAminoAcid.put("UAG", "END");
//		this.DNAToAminoAcid.put("UAA", "END");   	  
//		this.DNAToAminoAcid.put("UAU", "TYR");   	 
//		this.DNAToAminoAcid.put("UAC", "TYR");  
//	 	
//		this.DNAToAminoAcid.put("UUG", "LEU");
//		this.DNAToAminoAcid.put("UUA", "LEU");   	  
//		this.DNAToAminoAcid.put("UUU", "PHE");   	 
//		this.DNAToAminoAcid.put("UUC", "PHE");  
//	 	
//		this.DNAToAminoAcid.put("UCG", "SER");
//		this.DNAToAminoAcid.put("UCA", "SER");   	  
//		this.DNAToAminoAcid.put("UCU", "SER");   	 
//		this.DNAToAminoAcid.put("UCC", "SER");  
//	 	
//		this.DNAToAminoAcid.put("GGG", "GLY");
//		this.DNAToAminoAcid.put("GGA", "GLY");   	  
//		this.DNAToAminoAcid.put("GGU", "GLY");   	 
//		this.DNAToAminoAcid.put("GGC", "GLY");  
//	 	
//		this.DNAToAminoAcid.put("CGG", "ARG");
//		this.DNAToAminoAcid.put("CGA", "ARG");   	  
//		this.DNAToAminoAcid.put("CGU", "ARG");   	 
//		this.DNAToAminoAcid.put("CGC", "ARG");  
//	 	
//		this.DNAToAminoAcid.put("CAG", "GLN");
//		this.DNAToAminoAcid.put("CAA", "GLN");   	  
//		this.DNAToAminoAcid.put("CAU", "HIS");   	 
//		this.DNAToAminoAcid.put("CAC", "HIS");  
//
//		this.DNAToAminoAcid.put("CUG", "SER");
//		this.DNAToAminoAcid.put("CUA", "LEU");   	  
//		this.DNAToAminoAcid.put("CUU", "LEU");   	 
//		this.DNAToAminoAcid.put("CUC", "LEU");  
//	 	
//		this.DNAToAminoAcid.put("CCG", "PRO");
//		this.DNAToAminoAcid.put("CCA", "PRO");   	  
//		this.DNAToAminoAcid.put("CCU", "PRO");   	 
//		this.DNAToAminoAcid.put("CCC", "PRO");  
	 	
//		ct = {'CTT': 'L', 'ATG': 'M', 'ACA': 'T', 'ACG': 'T',
//				'ATC': 'I', 'AAC': 'N', 'ATA': 'I', 'AGG': 'R',
//				'CCT': 'P', 'ACT': 'T', 'AGC': 'S', 'AAG': 'K',
//				'AGA': 'R', 'CAT': 'H', 'AAT': 'N', 'ATT': 'I',
//				'CTG': 'S', 'CTA': 'L', 'CTC': 'L', 'CAC': 'H',
//				'TGG': 'W', 'CCG': 'P', 'AGT': 'S', 'CCA': 'P',
//				'CAA': 'Q', 'CCC': 'P', 'TAT': 'Y', 'GGT': 'G',
//				'TGT': 'C', 'CGA': 'R', 'CAG': 'Q', 'TCT': 'S',
//				'GAT': 'D', 'CGG': 'R', 'TTT': 'F', 'TGC': 'C',
//				'GGG': 'G', 'TAG': '*', 'GGA': 'G', 'TAA': '*',
//				'GGC': 'G', 'TAC': 'Y', 'TTC': 'F', 'TCG': 'S',
//				'TTA': 'L', 'TTG': 'L', 'TCC': 'S', 'ACC': 'T',
//				'TCA': 'S', 'GCA': 'A', 'GTA': 'V', 'GCC': 'A',
//				'GTC': 'V', 'GCG': 'A', 'GTG': 'V', 'GAG': 'E',
//				'GTT': 'V', 'GCT': 'A', 'AAA': 'K', 'TGA': '*',
//				'GAC': 'D', 'CGT': 'R', 'GAA': 'E', 'CGC': 'R'}

//		TTT F Phe      TCT S Ser      TAT Y Tyr      TGT C Cys  
//		TTC F Phe      TCC S Ser      TAC Y Tyr      TGC C Cys  
//		TTA L Leu      TCA S Ser      TAA * Ter      TGA * Ter  
//		TTG L Leu      TCG S Ser      TAG * Ter      TGG W Trp  

//		CTT L Leu      CCT P Pro      CAT H His      CGT R Arg  
//		CTC L Leu      CCC P Pro      CAC H His      CGC R Arg  
//		CTA L Leu      CCA P Pro      CAA Q Gln      CGA R Arg  
//		CTG S Ser i    CCG P Pro      CAG Q Gln      CGG R Arg  

//		ATT I Ile      ACT T Thr      AAT N Asn      AGT S Ser  
//		ATC I Ile      ACC T Thr      AAC N Asn      AGC S Ser  
//		ATA I Ile      ACA T Thr      AAA K Lys      AGA R Arg  
//		ATG M Met i    ACG T Thr      AAG K Lys      AGG R Arg  

//		GTT V Val      GCT A Ala      GAT D Asp      GGT G Gly  
//		GTC V Val      GCC A Ala      GAC D Asp      GGC G Gly  
//		GTA V Val      GCA A Ala      GAA E Glu      GGA G Gly  
//		GTG V Val      GCG A Ala      GAG E Glu      GGG G Gly  

		
		this.DNAToAminoAcid.put("TTT", "Phe");

		this.DNAToAminoAcid.put("TTC", "Phe");   	  
		this.DNAToAminoAcid.put("TTA", "Leu");   	 
		this.DNAToAminoAcid.put("TTG", "Leu");  
		
		this.DNAToAminoAcid.put("TCT", "Ser");
		this.DNAToAminoAcid.put("TCC", "Ser");
		this.DNAToAminoAcid.put("TCA", "Ser");
		this.DNAToAminoAcid.put("TCG", "Ser");
		 
		this.DNAToAminoAcid.put("TAT", "Tyr");
		this.DNAToAminoAcid.put("TAC", "Tyr");
		this.DNAToAminoAcid.put("TAA", "Ter");
		this.DNAToAminoAcid.put("TAG", "Ter");
		  
		this.DNAToAminoAcid.put("TGT", "Cys");
		this.DNAToAminoAcid.put("TGC", "Cys");
		this.DNAToAminoAcid.put("TGA", "Ter");
		this.DNAToAminoAcid.put("TGG", "Trp");
		
		this.DNAToAminoAcid.put("CTT", "Leu");
		this.DNAToAminoAcid.put("CTC", "Leu");
		this.DNAToAminoAcid.put("CTA", "Leu");
		this.DNAToAminoAcid.put("CTG", "Leu");
		
		this.DNAToAminoAcid.put("CCT", "Pro");
		this.DNAToAminoAcid.put("CCC", "Pro");
		this.DNAToAminoAcid.put("CCA", "Pro");
		this.DNAToAminoAcid.put("CCG", "Pro");	
		 
		this.DNAToAminoAcid.put("CAT", "His");
		this.DNAToAminoAcid.put("CAC", "His");
		this.DNAToAminoAcid.put("CAA", "His");
		this.DNAToAminoAcid.put("CAG", "His");
		   	  
		this.DNAToAminoAcid.put("CGT", "Arg");
		this.DNAToAminoAcid.put("CGC", "Arg");  	  
		this.DNAToAminoAcid.put("CGA", "Arg"); 
		this.DNAToAminoAcid.put("CGG", "Arg");
		

		this.DNAToAminoAcid.put("ATT", "Ile");
		this.DNAToAminoAcid.put("ATC", "Ile");
		this.DNAToAminoAcid.put("ATA", "Ile");
		this.DNAToAminoAcid.put("ATG", "Met");
		
		this.DNAToAminoAcid.put("ACT", "Thr");
		this.DNAToAminoAcid.put("ACC", "Thr");
		this.DNAToAminoAcid.put("ACA", "Thr");
		this.DNAToAminoAcid.put("ACG", "Thr");
		
		this.DNAToAminoAcid.put("AAT", "Asn");
		this.DNAToAminoAcid.put("AAC", "Asn");
		this.DNAToAminoAcid.put("AAA", "Lys");
		this.DNAToAminoAcid.put("AAG", "Lys");
		
		this.DNAToAminoAcid.put("AGT", "Ser");
		this.DNAToAminoAcid.put("AGC", "Ser");
		this.DNAToAminoAcid.put("AGA", "Arg");
		this.DNAToAminoAcid.put("AGG", "Arg");
		
		this.DNAToAminoAcid.put("GTT", "Val");
		this.DNAToAminoAcid.put("GTC", "Val");
		this.DNAToAminoAcid.put("GTA", "Val");
		this.DNAToAminoAcid.put("GTG", "Val");
		
		this.DNAToAminoAcid.put("GCT", "Ala");
		this.DNAToAminoAcid.put("GCC", "Ala");
		this.DNAToAminoAcid.put("GCA", "Ala");
		this.DNAToAminoAcid.put("GCG", "Ala");
		
        this.DNAToAminoAcid.put("GAT", "Asp");
        this.DNAToAminoAcid.put("GAC", "Asp");
        this.DNAToAminoAcid.put("GAA", "Glu");
        this.DNAToAminoAcid.put("GAG", "Glu");
		
        this.DNAToAminoAcid.put("GGG", "Gly");
        this.DNAToAminoAcid.put("GGC", "Gly");
        this.DNAToAminoAcid.put("GGA", "Gly");
        this.DNAToAminoAcid.put("GGT","Gly");  
        

	}
	
	public String getAminoAcid(Codon codon){
		AmbiguityCodes aa= new AmbiguityCodes();
	//	System.out.println(codon.getCodon());
		if(aa.containsAmbiguity(codon.getCodon())){
			return "nul";
		}else{
		String c =codon.getCodon();
	//	System.out.println(c);
		
		return this.DNAToAminoAcid.get(c);
		}
	}



	public String getAminoAcid(String x) {
		AmbiguityCodes aa= new AmbiguityCodes();
	///	System.out.println(x);
		if(aa.containsAmbiguity(x)){
			return "nul";
		}else{
		return this.DNAToAminoAcid.get(x);
		}
	}
}
